#include "ixemelle_io.h"
# include <string.h>   /* memcpy */
# include <stdio.h>    /* printf */
# include <stdlib.h>   /* malloc */


void ixemelle_fprintf_nom_balise( FILE * output ,
			      list_forest lf) {
	fprintf(output, "%s" , (char *)lf->value);
}

void ixemelle_fprintf_elements_balise( FILE * output ,
			      list_forest lf) {
	list_element * le = lf->element;
	while(le != 0){
		fprintf(output, "%s" , (char *)le->element);
		le = le->suivant;
	}
}


void ixmelle_fprint_aux(FILE * output ,
			      list_forest lf, int nombreTab){
	list_forest_position lfp;
	list_forest_position_create ( lf, &lfp);


	for(int i = 0; i<nombreTab;i++){
		fprintf(output,"\t");
	}

	if( list_forest_position_has_left_son(lfp) ){
		fprintf(output, "<" );
		ixemelle_fprintf_nom_balise(output , lf);
	 	ixemelle_fprintf_elements_balise( output , lf);
	 	fprintf(output, ">" );

		ixmelle_fprint_aux(output,lfp->node->firstSon,nombreTab+1);

		fprintf(output, "<", );
		ixemelle_fprintf_nom_balise(output , lf);
		fprintf(output, "/>" );
	}
	else{
		fprintf(output, "<");
	 	ixemelle_fprintf_nom_balise(output , lf);
	 	ixemelle_fprintf_elements_balise( output , lf,nombreTab);
		fprintf(output, "/>" );
	}


	if( list_forest_position_has_next_brother(lfp) ){
		ixmelle_fprint_aux(output,lfp->node->brotherRight);
	}

	list_forest_position_destroy(&lfp);
}

void ixemelle_fprint ( FILE * output ,
			      list_forest lf) {

	ixmelle_fprint_aux( output , lf, 0);

}



int ixemelle_lire_nom_balise(FILE * input ,  list_forest * lf){
	
}

int ixemelle_lire_balise_ouvrante(FILE * input ,  list_forest * lf){
	char c;
	if((c = fgetc(input)) != EOF){
		if( c == '<')
			ixemelle_lire_nom_balise(input , lf);
		else
			return XMLIGHT_SYNTAX_ERROR;/* erreur, cela devrait commencer par un  '<' */
	}
	else
		return XMLIGHT_SYNTAX_ERROR;/* fin du fichier */ 
}

int ixemelle_fscan ( FILE * input ,  
			    list_forest * lf) {
	ixemelle_lire_balise(input, lf)
} 
